
	package br.com.locadora.controller;

	import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;

	import javax.swing.JOptionPane;

import br.com.locadora.dao.FilmeDAO;
import br.com.locadora.modelo.Filme;
import br.com.locadora.modelo.TabelaFilmes;
import javafx.beans.property.IntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;

	public class CadastroFilmeController implements Initializable {

		@FXML
		private TableColumn<?, ?> clDuracao;

		@FXML
		private TableColumn<?, ?> clNome;

		@FXML
		private TableColumn<?, ?> clValor;

		@FXML
		private TableColumn<?, ?> clCodigo;
		
		@FXML
	    private TableView<TabelaFilmes> tabelaFor;


		@FXML
		private TextField txDuracao;

		@FXML
		private TextField txProcurar;
		
		@FXML
		private TextField txCodigoFilme;

		@FXML
		private TextField txNomeFilme;

		@FXML
		private TextField txValorFilme;

		@FXML
		private Button btExcluir;

		@FXML
		private Button btPesquisar;

		@FXML
		private Button btSalvar;


		@FXML
		void eventSalvar(ActionEvent event) {
			FilmeDAO dao = new FilmeDAO();
			Filme f = new Filme();
			f.setNomeFilme(txNomeFilme.getText());
			f.setValorFilme(Double.parseDouble(txValorFilme.getText()));
			f.setDuracaoFilme(txDuracao.getText());

			if(!txCodigoFilme.getText().trim().equals("")){
				f.setCodigoFilme(Integer.parseInt(txCodigoFilme.getText()));
				dao.Editar(f);
			}else{
				dao.Inserir(f);    		
			}

		}	

		@FXML
		void eventExcluir(ActionEvent event) {
			int linhaSelecionada = tabelaFor.getSelectionModel().getSelectedIndex();
	    	IntegerProperty cdFornecedor = tabelaFor.getSelectionModel().getSelectedItem().codigoProperty();
	    	FilmeDAO dao = new FilmeDAO();
	    	dao.Excluir(cdFornecedor.intValue());
	    	tabelaFor.getItems().remove(linhaSelecionada);

		}

		@FXML
		void eventPesquisar(ActionEvent event) {
			FilmeDAO dao = new FilmeDAO();
			List<Filme> filme = dao.ListarPorNome(txProcurar.getText());
			ObservableList<TabelaFilmes> dados = FXCollections.observableArrayList();
			
			for(Filme f: filme){
				dados.add(new TabelaFilmes(f));
			}
			clCodigo.setCellValueFactory(new PropertyValueFactory("codigo"));
			clNome.setCellValueFactory(new PropertyValueFactory("nomeFilme"));
			clValor.setCellValueFactory(new PropertyValueFactory("valor"));
			clDuracao.setCellValueFactory(new PropertyValueFactory("duracao"));
			tabelaFor.setItems(dados);
			
		}

		@Override
		public void initialize(URL arg0, ResourceBundle arg1) {
			carregarTabela();
		}

		private void carregarTabela() {
			FilmeDAO dao = new FilmeDAO();
			List<Filme> filme = dao.Listar();
			ObservableList<TabelaFilmes> dados = FXCollections.observableArrayList();

			for(Filme f: filme){
				dados.add(new TabelaFilmes(f));
			
			}

			clCodigo.setCellValueFactory(new PropertyValueFactory("codigo"));
			clNome.setCellValueFactory(new PropertyValueFactory("nomeFilme"));
			clValor.setCellValueFactory(new PropertyValueFactory("valor"));
			clDuracao.setCellValueFactory(new PropertyValueFactory("duracao"));
			tabelaFor.setItems(dados);
		}
	}

